--[[
    函数：setApiKeylua
     User: mk
     Date: 2018/5/30
     Time: 9:38
     参数：ARGV[1]: apiKey
     参数：ARGV[2]: 权限
     参数：ARGV[3]: setIds
     参数：ARGV[4]:用户的id
     参数：ARGV[5]:描述信息
     参数：ARGV[6]:创建时间
     参数：ARGV[7]:token的过期时间
     参数：ARGV[8]:token
     参数：ARGV[9]:token的创建时间
    功能：设置apiKey
    返回：1表示成功，0表示失败
--]]



local  apiKey = ARGV[1]
local  apiToken = ARGV[8]
--判断是否存在
local isOkKey = tonumber(redis.call('EXISTS',apiKey)) or 0
--判断是否有key
if(isOkKey > 0)
then
    --如果有则获取当前token
    local oldToken = redis.call('hget',apiKey, 'token')
    --断是否和刚生产的一致,不一致设置过期时间10秒,并把新的token给key
    if(oldToken ~= apiToken)
    then
        --老的token设置新的过期时间
        redis.call('expire',oldToken,10)
        --修改key中的token信息
        redis.call('hset',apiKey,'token',apiToken)
        --建立新token缓存
        redis.call('hset',apiToken,'key',apiKey)
        redis.call('hset',apiToken,'auth',ARGV[2])
        redis.call('hset',apiToken,'setIds',ARGV[3])
        redis.call('hset',apiToken,'userId',ARGV[4])
        redis.call('hset',apiToken,'desc',ARGV[5])
        redis.call('hset',apiToken,'creatTime',ARGV[9])
        redis.call('hset',apiToken,'expireTime',ARGV[7])
        --设置过期时间
        redis.call('expire',apiToken,tonumber(ARGV[7]))
    end
else
    --建立key缓存
    redis.call('hset',apiKey,'token',apiToken)
    redis.call('hset',apiKey,'creatTime',ARGV[6])
    --建立新token缓存
    redis.call('hset',apiToken,'key',apiKey)
    redis.call('hset',apiToken,'auth',ARGV[2])
    redis.call('hset',apiToken,'setIds',ARGV[3])
    redis.call('hset',apiToken,'userId',ARGV[4])
    redis.call('hset',apiToken,'desc',ARGV[5])
    redis.call('hset',apiToken,'creatTime',ARGV[9])
    redis.call('hset',apiToken,'expireTime',ARGV[7])
    --设置过期时间
    redis.call('expire',apiToken,tonumber(ARGV[7]))
end

local isOkToken = tonumber(redis.call('EXISTS',apiToken)) or 0
--判断是否有token存在
if(isOkToken > 0)
then
    return 1
else
   return 0
end

